From 090cd2238aeabe0991c21752df0cb77abe65f158 Mon Sep 17 00:00:00 2001 From: Benjamin Otte Date: Fri, 16 Jun 2023 08:00:19 +0200 Subject: [PATCH] gdk: Replace prefers_high_depth with depth Now that we track depth, we can also pass it into the GDK frame code. For now it's just passed along, code acts the same as with prefers_high_depth. --- gdk/broadway/gdkcairocontext-broadway.c | 2 +- gdk/broadway/gdkdrawcontext-broadway.c | 2 +- gdk/gdkdrawcontext.c | 21 +++++++++++---------- gdk/gdkdrawcontextprivate.h | 6 ++++-- gdk/gdkglcontext.c | 4 ++-- gdk/gdkvulkancontext.c | 2 +- gdk/macos/gdkmacoscairocontext.c | 2 +- gdk/macos/gdkmacosglcontext.c | 2 +- gdk/wayland/gdkcairocontext-wayland.c | 2 +- gdk/wayland/gdkglcontext-wayland.c | 4 ++-- gdk/win32/gdkcairocontext-win32.c | 2 +- gdk/win32/gdkglcontext-win32-egl.c | 4 ++-- gdk/win32/gdkglcontext-win32-wgl.c | 4 ++-- gdk/win32/gdkvulkancontext-win32.c | 4 ++-- gdk/x11/gdkcairocontext-x11.c | 2 +- gsk/gl/gskglrenderer.c | 2 +- 16 files changed, 34 insertions(+), 31 deletions(-) diff --git a/gdk/broadway/gdkcairocontext-broadway.c b/gdk/broadway/gdkcairocontext-broadway.c index c2924bdf29..314ebf54a0 100644 --- a/gdk/broadway/gdkcairocontext-broadway.c +++ b/gdk/broadway/gdkcairocontext-broadway.c @@ -34,7 +34,7 @@ gdk_broadway_cairo_context_dispose (GObject *object) static void gdk_broadway_cairo_context_begin_frame (GdkDrawContext *draw_context, - gboolean prefers_high_depth, + GdkMemoryDepth depth, cairo_region_t *region) { GdkBroadwayCairoContext *self = GDK_BROADWAY_CAIRO_CONTEXT (draw_context); diff --git a/gdk/broadway/gdkdrawcontext-broadway.c b/gdk/broadway/gdkdrawcontext-broadway.c index da65aab78a..85ab2bd6f9 100644 --- a/gdk/broadway/gdkdrawcontext-broadway.c +++ b/gdk/broadway/gdkdrawcontext-broadway.c @@ -34,7 +34,7 @@ gdk_broadway_draw_context_dispose (GObject *object) static void gdk_broadway_draw_context_begin_frame (GdkDrawContext *draw_context, - gboolean prefers_high_depth, + GdkMemoryDepth depth, cairo_region_t *region) { GdkBroadwayDrawContext *self = GDK_BROADWAY_DRAW_CONTEXT (draw_context); diff --git a/gdk/gdkdrawcontext.c b/gdk/gdkdrawcontext.c index e461ebdd28..7a22c49b76 100644 --- a/gdk/gdkdrawcontext.c +++ b/gdk/gdkdrawcontext.c @@ -311,19 +311,20 @@ gdk_draw_context_begin_frame (GdkDrawContext *context, g_return_if_fail (priv->surface != NULL); g_return_if_fail (region != NULL); - gdk_draw_context_begin_frame_full (context, FALSE, region); + gdk_draw_context_begin_frame_full (context, GDK_MEMORY_U8, region); } /* - * @prefers_high_depth: %TRUE to request a higher bit depth + * @depth: best depth to render in * - * If high depth is preferred, GDK will see about providing a rendering target - * that supports higher bit depth than 8 bits per channel. Typically this means - * a target supporting 16bit floating point pixels, but that is not guaranteed. + * If the given depth is not `GDK_MEMORY_U8`, GDK will see about providing a + * rendering target that supports a higher bit depth than 8 bits per channel. + * Typically this means a target supporting 16bit floating point pixels, but + * that is not guaranteed. * * This is only a request and if the GDK backend does not support HDR rendering * or does not consider it worthwhile, it may choose to not honor the request. - * It may also choose to provide high depth even if it was not requested. + * It may also choose to provide a differnet depth even if it was not requested. * Typically the steps undertaken by a backend are: * 1. Check if high depth is supported by this drawing backend. * 2. Check if the compositor supports high depth. @@ -333,12 +334,12 @@ gdk_draw_context_begin_frame (GdkDrawContext *context, * In either of those cases, the context will usually choose to not honor the request. * * The rendering code must be able to deal with content in any bit depth, no matter - * the preference. The prefers_high_depth argument is only a hint and GDK is free + * the preference. The depth argument is only a hint and GDK is free * to choose. */ void gdk_draw_context_begin_frame_full (GdkDrawContext *context, - gboolean prefers_high_depth, + GdkMemoryDepth depth, const cairo_region_t *region) { GdkDrawContextPrivate *priv = gdk_draw_context_get_instance_private (context); @@ -365,12 +366,12 @@ gdk_draw_context_begin_frame_full (GdkDrawContext *context, } if (gdk_display_get_debug_flags (priv->display) & GDK_DEBUG_HIGH_DEPTH) - prefers_high_depth = TRUE; + depth = GDK_MEMORY_FLOAT32; priv->frame_region = cairo_region_copy (region); priv->surface->paint_context = g_object_ref (context); - GDK_DRAW_CONTEXT_GET_CLASS (context)->begin_frame (context, prefers_high_depth, priv->frame_region); + GDK_DRAW_CONTEXT_GET_CLASS (context)->begin_frame (context, depth, priv->frame_region); cairo_region_intersect_rectangle (priv->frame_region, &(cairo_rectangle_int_t) { diff --git a/gdk/gdkdrawcontextprivate.h b/gdk/gdkdrawcontextprivate.h index e7ab10898c..ecc1412cc9 100644 --- a/gdk/gdkdrawcontextprivate.h +++ b/gdk/gdkdrawcontextprivate.h @@ -22,6 +22,8 @@ #include "gdkdrawcontext.h" +#include "gdkmemoryformatprivate.h" + G_BEGIN_DECLS #define GDK_DRAW_CONTEXT_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GDK_TYPE_DRAW_CONTEXT, GdkDrawContextClass)) @@ -40,7 +42,7 @@ struct _GdkDrawContextClass GObjectClass parent_class; void (* begin_frame) (GdkDrawContext *context, - gboolean prefers_high_depth, + GdkMemoryDepth depth, cairo_region_t *update_area); void (* end_frame) (GdkDrawContext *context, cairo_region_t *painted); @@ -50,7 +52,7 @@ struct _GdkDrawContextClass void gdk_draw_context_surface_resized (GdkDrawContext *context); void gdk_draw_context_begin_frame_full (GdkDrawContext *context, - gboolean prefers_high_depth, + GdkMemoryDepth depth, const cairo_region_t *region); G_END_DECLS diff --git a/gdk/gdkglcontext.c b/gdk/gdkglcontext.c index 97ffe71a90..eeba765d5c 100644 --- a/gdk/gdkglcontext.c +++ b/gdk/gdkglcontext.c @@ -581,7 +581,7 @@ gdk_gl_context_get_scale (GdkGLContext *self) static void gdk_gl_context_real_begin_frame (GdkDrawContext *draw_context, - gboolean prefers_high_depth, + GdkMemoryDepth depth, cairo_region_t *region) { GdkGLContext *context = GDK_GL_CONTEXT (draw_context); @@ -597,7 +597,7 @@ gdk_gl_context_real_begin_frame (GdkDrawContext *draw_context, #ifdef HAVE_EGL if (priv->egl_context) - gdk_surface_ensure_egl_surface (surface, prefers_high_depth); + gdk_surface_ensure_egl_surface (surface, depth != GDK_MEMORY_U8); #endif damage = GDK_GL_CONTEXT_GET_CLASS (context)->get_damage (context); diff --git a/gdk/gdkvulkancontext.c b/gdk/gdkvulkancontext.c index 93bf2ce917..ac16ec1551 100644 --- a/gdk/gdkvulkancontext.c +++ b/gdk/gdkvulkancontext.c @@ -520,7 +520,7 @@ device_supports_incremental_present (VkPhysicalDevice device) static void gdk_vulkan_context_begin_frame (GdkDrawContext *draw_context, - gboolean prefers_high_depth, + GdkMemoryDepth depth, cairo_region_t *region) { GdkVulkanContext *context = GDK_VULKAN_CONTEXT (draw_context); diff --git a/gdk/macos/gdkmacoscairocontext.c b/gdk/macos/gdkmacoscairocontext.c index 31eecd5df6..17c2b32811 100644 --- a/gdk/macos/gdkmacoscairocontext.c +++ b/gdk/macos/gdkmacoscairocontext.c @@ -190,7 +190,7 @@ copy_surface_data (GdkMacosBuffer *from, static void _gdk_macos_cairo_context_begin_frame (GdkDrawContext *draw_context, - gboolean prefers_high_depth, + GdkMemoryDepth depth, cairo_region_t *region) { GdkMacosCairoContext *self = (GdkMacosCairoContext *)draw_context; diff --git a/gdk/macos/gdkmacosglcontext.c b/gdk/macos/gdkmacosglcontext.c index 0503c2b0f6..87e6e19fe0 100644 --- a/gdk/macos/gdkmacosglcontext.c +++ b/gdk/macos/gdkmacosglcontext.c @@ -480,7 +480,7 @@ gdk_macos_gl_context_real_realize (GdkGLContext *context, static void gdk_macos_gl_context_begin_frame (GdkDrawContext *context, - gboolean prefers_high_depth, + GdkMemoryDepth depth, cairo_region_t *region) { GdkMacosGLContext *self = (GdkMacosGLContext *)context; diff --git a/gdk/wayland/gdkcairocontext-wayland.c b/gdk/wayland/gdkcairocontext-wayland.c index 2e4ad16477..33cee7012e 100644 --- a/gdk/wayland/gdkcairocontext-wayland.c +++ b/gdk/wayland/gdkcairocontext-wayland.c @@ -145,7 +145,7 @@ gdk_wayland_cairo_context_create_surface (GdkWaylandCairoContext *self) static void gdk_wayland_cairo_context_begin_frame (GdkDrawContext *draw_context, - gboolean prefers_high_depth, + GdkMemoryDepth depth, cairo_region_t *region) { GdkWaylandCairoContext *self = GDK_WAYLAND_CAIRO_CONTEXT (draw_context); diff --git a/gdk/wayland/gdkglcontext-wayland.c b/gdk/wayland/gdkglcontext-wayland.c index b236854ba9..fcf4ace152 100644 --- a/gdk/wayland/gdkglcontext-wayland.c +++ b/gdk/wayland/gdkglcontext-wayland.c @@ -48,12 +48,12 @@ G_DEFINE_TYPE (GdkWaylandGLContext, gdk_wayland_gl_context, GDK_TYPE_GL_CONTEXT) static void gdk_wayland_gl_context_begin_frame (GdkDrawContext *draw_context, - gboolean prefers_high_depth, + GdkMemoryDepth depth, cairo_region_t *region) { gdk_wayland_surface_ensure_wl_egl_window (gdk_draw_context_get_surface (draw_context)); - GDK_DRAW_CONTEXT_CLASS (gdk_wayland_gl_context_parent_class)->begin_frame (draw_context, prefers_high_depth, region); + GDK_DRAW_CONTEXT_CLASS (gdk_wayland_gl_context_parent_class)->begin_frame (draw_context, depth, region); } static void diff --git a/gdk/win32/gdkcairocontext-win32.c b/gdk/win32/gdkcairocontext-win32.c index e6cfb66c4d..f69731c0b1 100644 --- a/gdk/win32/gdkcairocontext-win32.c +++ b/gdk/win32/gdkcairocontext-win32.c @@ -53,7 +53,7 @@ create_cairo_surface_for_surface (GdkSurface *surface, static void gdk_win32_cairo_context_begin_frame (GdkDrawContext *draw_context, - gboolean prefers_high_depth, + GdkMemoryDepth depth, cairo_region_t *region) { GdkWin32CairoContext *self = GDK_WIN32_CAIRO_CONTEXT (draw_context); diff --git a/gdk/win32/gdkglcontext-win32-egl.c b/gdk/win32/gdkglcontext-win32-egl.c index 82019d6e6c..07e7892a74 100644 --- a/gdk/win32/gdkglcontext-win32-egl.c +++ b/gdk/win32/gdkglcontext-win32-egl.c @@ -109,12 +109,12 @@ gdk_win32_gl_context_egl_end_frame (GdkDrawContext *draw_context, static void gdk_win32_gl_context_egl_begin_frame (GdkDrawContext *draw_context, - gboolean prefers_high_depth, + GdkMemoryDepth depth, cairo_region_t *update_area) { gdk_win32_surface_handle_queued_move_resize (draw_context); - GDK_DRAW_CONTEXT_CLASS (gdk_win32_gl_context_egl_parent_class)->begin_frame (draw_context, prefers_high_depth, update_area); + GDK_DRAW_CONTEXT_CLASS (gdk_win32_gl_context_egl_parent_class)->begin_frame (draw_context, depth, update_area); } static void diff --git a/gdk/win32/gdkglcontext-win32-wgl.c b/gdk/win32/gdkglcontext-win32-wgl.c index 055c8a6b93..d5f8ce56b1 100644 --- a/gdk/win32/gdkglcontext-win32-wgl.c +++ b/gdk/win32/gdkglcontext-win32-wgl.c @@ -118,12 +118,12 @@ gdk_win32_gl_context_wgl_end_frame (GdkDrawContext *draw_context, static void gdk_win32_gl_context_wgl_begin_frame (GdkDrawContext *draw_context, - gboolean prefers_high_depth, + GdkMemoryDepth depth, cairo_region_t *update_area) { gdk_win32_surface_handle_queued_move_resize (draw_context); - GDK_DRAW_CONTEXT_CLASS (gdk_win32_gl_context_wgl_parent_class)->begin_frame (draw_context, prefers_high_depth, update_area); + GDK_DRAW_CONTEXT_CLASS (gdk_win32_gl_context_wgl_parent_class)->begin_frame (draw_context, depth, update_area); } static int diff --git a/gdk/win32/gdkvulkancontext-win32.c b/gdk/win32/gdkvulkancontext-win32.c index e31bc3839f..eacbf5c814 100644 --- a/gdk/win32/gdkvulkancontext-win32.c +++ b/gdk/win32/gdkvulkancontext-win32.c @@ -66,12 +66,12 @@ gdk_win32_vulkan_context_create_surface (GdkVulkanContext *context, static void gdk_win32_vulkan_context_begin_frame (GdkDrawContext *draw_context, - gboolean prefers_high_depth, + GdkMemoryDepth depth, cairo_region_t *update_area) { gdk_win32_surface_handle_queued_move_resize (draw_context); - GDK_DRAW_CONTEXT_CLASS (gdk_win32_vulkan_context_parent_class)->begin_frame (draw_context, prefers_high_depth, update_area); + GDK_DRAW_CONTEXT_CLASS (gdk_win32_vulkan_context_parent_class)->begin_frame (draw_context, depth, update_area); } static void diff --git a/gdk/x11/gdkcairocontext-x11.c b/gdk/x11/gdkcairocontext-x11.c index 6a9a3fdc84..9e99c89baa 100644 --- a/gdk/x11/gdkcairocontext-x11.c +++ b/gdk/x11/gdkcairocontext-x11.c @@ -55,7 +55,7 @@ create_cairo_surface_for_surface (GdkSurface *surface) static void gdk_x11_cairo_context_begin_frame (GdkDrawContext *draw_context, - gboolean prefers_high_depth, + GdkMemoryDepth depth, cairo_region_t *region) { GdkX11CairoContext *self = GDK_X11_CAIRO_CONTEXT (draw_context); diff --git a/gsk/gl/gskglrenderer.c b/gsk/gl/gskglrenderer.c index ab3f93cf64..d61a42258c 100644 --- a/gsk/gl/gskglrenderer.c +++ b/gsk/gl/gskglrenderer.c @@ -296,7 +296,7 @@ gsk_gl_renderer_render (GskRenderer *renderer, viewport.size.height = gdk_surface_get_height (surface) * scale; gdk_draw_context_begin_frame_full (GDK_DRAW_CONTEXT (self->context), - gsk_render_node_get_preferred_depth (root) != GDK_MEMORY_U8, + gsk_render_node_get_preferred_depth (root), update_area); gdk_gl_context_make_current (self->context); -- 2.30.2